package com.coolgor.coldot.service.auth;

import java.util.List;

import com.coolgor.coldot.dto.auth.FunctionExecution;
import com.coolgor.coldot.entity.auth.Function;
import com.coolgor.coldot.entity.auth.Role;
import com.coolgor.coldot.exceptions.auth.FunctionOperationException;

public interface FunctionService {
	
	Function getFunction(long functionID);

	FunctionExecution getFunctionList(Function functionCondition, int pageIndex, int pageSize);
	
	FunctionExecution getFunctionTree(Function functionCondition);
	
	FunctionExecution getFunctionTreeByRole(Function functionCondition, Role role);
	
	FunctionExecution addFunction(Function function) throws FunctionOperationException;
	
	FunctionExecution modifyFunction(Function function) throws FunctionOperationException;
	
	FunctionExecution removeFunction(Function function) throws FunctionOperationException;
	
	FunctionExecution batchRemoveFunction(List<Function> functionList) throws FunctionOperationException;
}